package com.shen.stream;


import java.sql.Array;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.ForkJoinTask;

/**
 * 题目要求：一分钟内完成
 * 筛选用户
 * 1.ID必须是偶数
 * 2.年龄必须大于23岁
 * 3.用户名称转换为大写字母
 * 4.用户名字母倒着排序
 * 5.只输出一个用户
 */
public class Demo01 {
    public static void main(String[] args) {
        User user1 = new User(1,"a",21);
        User user2 = new User(2,"b",22);
        User user3 = new User(3,"c",23);
        User user4 = new User(4,"d",24);
        User user5 = new User(6,"e",25);
        //集合就是用来存储的
        List<User> users = Arrays.asList(user1, user2, user3, user4, user5);
        //过滤计算交给流


        //users.stream() 转换为流
        //Stream<T> filter(Predicate<? super T> predicate);   过滤一些用户，返回过滤后的流

        // <R> Stream<R> map(Function<? super T, ? extends R> mapper);   函数式接口 传入一个值，返回一个值

        //Stream<T> sorted(Comparator<? super T> comparator);
        // void forEach(Consumer<? super T> action);  Consumer消费型接口，无返回值
        //                         其中有一个方法：     int compare(T o1, T o2); 比较两个值 o1>o2是顺序

        //Stream<T> limit(long maxSize);   limit分页

        users.stream()
                .filter((u)->{return  u.getId()%2==0;}) //1.ID必须是偶数
                .filter((u)->{return u.getAge()>23;})//2.年龄必须大于23岁
                .map((u)->{return u.getName().toUpperCase();})//3.用户名称转换为大写字母 D  E
                .sorted((u1,u2)->{return u2.compareTo(u1);})//4.用户名字母倒着排序   E D
                .limit(1)//5.只输出一个用户 E
                .forEach(System.out::println);//E

    }
}
